"""
使用bs4解析数据
1.构造bs4对象
2.搜索节点
1)通过find_all,find等操作方法搜索节点
2)通过css选择器搜索
3.获取节点内容
get_text()
"""
import requests
from bs4 import BeautifulSoup

# 1.利用requests爬取百度首页，保存在文件baidu.com
# 爬取网页:1)是否需要登录才能爬取(可以利用cookie或session实现)
#  2)get 请求还是post请求（post请求需要请求体数据）

url = 'https://www.baidu.com/'
# 构造指点(请求头)
h = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
}
# get请求:url,包含user-agent的请求头
r = requests.get(url, headers=h)
# 将数据写入文件
with open('baidu.html', 'w', encoding='utf-8') as f:
    f.write(r.content.decode())

# 2，利用bs4解析baidu.html文件

# 1)构造bs4对象.参数1:要解析的文本 参数2:解析器
soup = BeautifulSoup(r.content.decode(),'lxml')
# 2)利用find_all,find方法搜索节点、标签
#搜索文本中所有的a标签
print('--------------搜索所标签---------------')
result1=soup.find_all('a')
print(type(result1))
print(result1)
print('--------------搜索第一个a标签---------------')
result2 = soup.find('a')
print(result2)
print('--------------搜索所有的a标签和img标签，结果保留3条记录---------------')
result3 = soup.find_all(['a','img'],limit=3)
print(result3)
print('-------搜索a标签------')
result4 = soup.find_all('a',{'class':"mnav c-font-normal c-color-t"})
for e in result4:
    print(e)

#2)利用css选择器搜索
print('-------用select搜索title标签------')
r1 = soup.select('title')
print(r1)
print('------------搜索标签名li类名为hotsearch-item-------------')
r2=soup.select('li.hotsearch-item')
for e in r2:
    print(e.get_text())



